A terminal emulator, terminal application, term, or tty for short, is a program that emulates a video terminal within some other display architecture. Though typically synonymous with a command line shell or text terminal, the term terminal covers all remote terminals, including graphical interfaces. A terminal emulator inside a graphical user interface is often called a terminal window.
A terminal window allows the user access to a text terminal and all its applications such as command line interfaces (CLI) and text user interface applications. These may be running either on the same machine or on a different one via telnet, ssh, or dial-up. On Unix-like operating systems it is common to have one or more terminal windows connected to the local machine.
Terminals usually support a set of escape sequences for controlling color, cursor position, etc. Examples include the family of terminal control sequence standards known as ECMA-48, ANSI X3.64 or ISO/IEC 6429.
Early adopters of computer technology, such as banks, insurance companies, and governments, still make frequent use of terminal emulators. They typically have decades old applications running on mainframe computers. The old "dumb" video terminals used to access the mainframe are long since obsolete; however, applications on the mainframe are still in use. Quite often, terminal emulators are the only way a user can access applications running on these older machines.
Contents |
Terminal emulators may implement a local echo function, which they may erroneously name "half-duplex" (Half-duplex is different altogether), or slightly more correctly (albeit strictly still slightly incorrectly) "echoplex" (which is formally an error detection mechanism rather than an input display option).[1][2][3][4] For details of the local echo control mechanisms of terminal emulators, see the main article.
Terminal emulators may implement local editing, also known as "line-at-a-time mode". This is also mistakenly referred to as "half-duplex". In this mode, the terminal emulator only sends complete lines of input to the host system. The user enters and edits a line, but it is held locally within the terminal emulator as it is being edited and not transmitted until the user signals (usually with the <kbd class="keyboard-key" style="border: 1px solid; border-color: #ddd #bbb #bbb #ddd; border-bottom-width: 2px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; background-color: #f9f9f9; padding: 1px 3px; font-family: inherit; font-size: 0.85em; white-space: nowrap;">return</kbd> key on the keyboard or a "send" button of some sort on the user interface) the completion of the line. At that point the entire line is transmitted. Of course, line-at-a-time mode implies local echo, since otherwise the user will not be able to see the line as it is being edited and constructed.[1][5] However, line-at-a-time mode is independent of echo mode and does not require local echo. When entering a password, for example, line-at-a-time entry with local editing is possible, but local echo should be turned off (otherwise the password would be displayed).[6]
The complexities of line-at-a-time mode are exemplified by the line-at-a-time mode option in the TELNET protocol. To implement it correctly for the user, the Network Virtual Terminal implementation, provided by the terminal emulator program, must be capable of recognizing and properly dealing with "interrupt" and "abort" events that arrive in the middle of locally editing a line.[7]
In asychronous terminals data can flow in any direction at any time. In synchronous terminals a protocol controls who may send data when. The IBM 3270-based terminals used with IBM mainframe computers are an example of synchronous terminals. They operate in an essentially "screen-at-a-time" mode (also known as block mode). Users can make numerous changes to a page, before submitting the updated screen to the remote machine as a single action. This paradigm can be surprising to those used to the more common asynchronous terminal behaviour, though in fact it is conceptually quite similar to the submission of HTTP forms on the Web.
Terminal emulators that simulate the original 3270 hardware terminal are available for most operating systems, for use both by those administering systems such as the z9, as well as those using the corresponding applications such as CICS.
Other examples of synchronous terminals include the IBM 5250, and the ICL 7561. The Honeywell Bull VIP7800 and Hewlett-Packard 700/92 terminals also had a block mode.
Many terminal emulators have been developed for terminals such as VT100, VT220, VT320, IBM 3270/8/9/E, IBM 5250, IBM 3179G, Data General D211, Hewlett Packard HP700/92, Sperry/Unisys 2000-series UTS60, Burroughs/Unisys A-series T27/TD830/ET1100, ADDS ViewPoint, Sun console, QNX, AT386, SCO-ANSI, SNI 97801, Televideo, and Wyse 50/60. Additionally, programs have been developed to emulate terminals which are themselves programs, such as xterm and assorted console terminals (e.g., for Linux). Finally, some emulations simply refer to a standard, such as ANSI. These programs are available on many platforms ranging from DOS and Unix to GUI operating systems such as Windows and Macs, to embedded operating systems found in cellphones and industrial hardware.